home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 44 / Amiga Format CD44 (1999-08-26)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-10].iso / -in_the_mag- / basics / amos / a3ddefence.lha / defence.amos / defence.amosSourceCode < prev    next >
AMOS Source Code  |  1998-05-11  |  27KB  |  829 lines

  1. '
  2. '
  3. '
  4. '
  5.   ' On Error Goto OUT
  6.     Gosub SETUP
  7.     Gosub RAYN
  8.    '
  9. Paper 0
  10. Locate 0,26 : Print "bomb hits="
  11. Locate 0,27 : Print "enemies hit="
  12. Locate 0,28 : Print "speed adjst"
  13. Screen Swap 
  14. Locate 0,26 : Print "bomb hits="
  15. Locate 0,27 : Print "enemies hit="
  16. Locate 0,28 : Print "speed adjst"
  17. '
  18. '   ..=================   START  OF MAIN LOOP ==================== 
  19. '
  20.             Repeat 
  21.  '
  22.    Gosub STICKREAD
  23.    F$=Inkey$ : Clear Key 
  24.    If F$<>"" Then Gosub KEYBOARD
  25.    Gosub PLANEADJUST
  26.    Gosub LOOKSEE
  27.    '
  28.     Extension_4_053C 
  29.     Extension_4_0318 
  30. '  
  31.      If XFIRE>15 and GUH=0 Then Gosub LAUNCH
  32. '
  33.       ALT=150+(UPDOWN/40)
  34. '
  35.      Dec ECHECK : If ECHECK<1 Then Gosub ENEW : Rem IST PLANE
  36.      Dec ECHECK2 : If ECHECK2<1 Then Gosub ENEW2 : Rem  2ND PLANE 
  37.      Dec ECHECK3 : If ECHECK3<1 Then Gosub ENEW3 : Rem  3ND PLANE 
  38.      Dec ECHECK4 : If ECHECK4<1 Then Gosub ENEW4 : Rem  4ND PLANE 
  39. '        
  40.      '           drop some bombs..........
  41.      Dec DROP1
  42.       If DROP1<2 : DROP1=1 : Gosub RELEASE1 : End If 
  43.      Dec DROP2
  44.       If DROP2<2 : DROP2=1 : Gosub RELEASE2 : End If 
  45.      Dec DROP3
  46.       If DROP3<2 : DROP3=1 : Gosub RELEASE3 : End If 
  47.      Dec DROP4
  48.       If DROP4<2 : DROP4=1 : Gosub RELEASE4 : End If 
  49. '
  50.   ' Td Redraw  
  51. '
  52.      Inc MAPUP : If MAPUP>7 Then MAPUP=0 : Gosub MAP : Rem  update radar map  
  53.      If HIT>0 Then Gosub BANG
  54.      If GUH<MISRANGE and GUH>0 Then Gosub MISSILEMOVE
  55.      Pen 12
  56.   ' Locate 0,2 : Print Timer-K;SPEED;SWOP
  57.     WHATT:
  58.      If Timer-K<3 Then Goto WHATT
  59.          K=Timer
  60.    Locate 10,26 : Print HITS;"  "
  61.     Locate 12,27 : Print SCORE;" "
  62. Locate 11,28 : Print SPEED;" "
  63.     Ink 12
  64.   Box 157,ALT To 163,ALT+5
  65.   Gosub BACGRND
  66.    If HITS>199 Then Gosub LOSE
  67.    If SCORE>HITJET Then Gosub WIN
  68.    Screen Swap 
  69.  Wait Vbl 
  70.                         Until False
  71.  '            
  72. '              END LOOP--------- END LOOP
  73. '======================================================================= 
  74.       SETUP:
  75. '
  76. D$=Dir$
  77. Screen Open 1,320,250,16,Lowres : Rem 3d screen
  78. NTS=0
  79. If Peek(Leek(4)+530)=60 : Rem test for ntsc I hope               
  80.  Screen Offset 1,0,24 : Rem for map  to come on screen bottom  
  81. NTS=24 : Rem  for rainbow 
  82. End If 
  83. '
  84.  Colour 1,$233
  85.  Screen Open 6,620,250,2,Hires : Colour 0,$AAA : Colour 1,$0 : Rem for intro  
  86. Screen Open 2,936,256,16,Lowres : Rem these 2 for background iffs
  87. Screen Open 3,936,256,16,Lowres
  88. Screen To Front 1 : Curs Off 
  89. '
  90. Load Iff D$+"pictures/defendera",2 : Screen Hide 2
  91. Load Iff D$+"pictures/defenderb",3 : Screen Hide 3
  92.  YO=0
  93.  For G=0 To 900 Step 70
  94. Inc YO
  95. Get Bob YO,G+2,200 To G+60,225
  96. Next 
  97. '
  98. LESSPLANE=0
  99. DISPLACE=0
  100. BHITE=143-DISPLACE
  101. BDEST=57+DISPLACE
  102.  Gosub HALP
  103.  Screen 1
  104.  Get Palette 2
  105.  Gosub GTBLOCK
  106.  Dim SMKX(40) : Dim SMKY(40) : Dim SMKZ(40)
  107.  Degree 
  108.  HYTE=200
  109. '
  110.   Extension_4_04D6 D$+"objects"
  111.  Screen 1 : Flash Off 
  112.   Extension_4_0054 HYTE
  113.  RT1=16384 : RT2=32768 : RT3=49152 : RT4=65536
  114. Ink 0 : Draw 10,204 To 310,204
  115.  Ink 15
  116.  Curs Off 
  117.  Double Buffer 
  118.  Autoback 0
  119.  Load D$+"banks/jetnoises.abk",5
  120. ' Td Keep On   
  121.  '
  122.     Extension_4_0016 "jetplane1"
  123.     Extension_4_0016 "bomb2"
  124.     Extension_4_0016 "missile1"
  125.     Extension_4_0016 "bomb"
  126.   Extension_4_0036 5,"jetplane1",3100,1500,350,RT1,RT2+4000,0
  127.   Extension_4_0036 6,"jetplane1",-18100,0,1000,RT1,RT2-4000,0
  128.   Extension_4_0036 7,"jetplane1",29100,-19000,4250,RT1,RT2-4000,RT2
  129.   Extension_4_0036 8,"jetplane1",25100,21000,1250,RT1,RT2-4000,RT2
  130.  '
  131. Gosub CULOR
  132.  Extension_4_0328 5,0,0,0,0,200
  133.  Extension_4_0328 6,0,0,0,0,200
  134.  Extension_4_0328 7,0,0,0,0,200
  135.  Extension_4_0328 8,0,0,0,0,200
  136.  'Td Move 0,0,0,0 
  137.       '          ---------------  some sound -------------   
  138. Volume 23 : Sam Loop On 
  139.  Sam Play %1000,1,16000 : Sam Play %1,1,19000 : Sam Play %100,1,22000
  140.  Rem  1st,plane,  2ndbang,  3rd missile,   4th  plane and bang      
  141. '  ------------
  142.  DIST=1900 : MOWED=0 : SAFE=500000 : HIT=0 : SWITCH=2
  143.  SPEED=0 : JUMP=-8780 : Rem inertia 3 -accl  
  144.   MAPUP=0 : SPOT1=120 : BIGMOOV=512 : EBNK=4000 : AROUND=0 : UPDOWN=0
  145.  '       can't remember what all these are for    
  146.  OFFANG=2000 : MISRANGE=25 : Rem 30 is full map 
  147.  ZSIZE=600 : STICK=180 : SUBSTICK=STICK/2.5 : INERTIA=4
  148.  '   above substick sets relative vertical movement 
  149.   Gosub MAP
  150.   DROP1=100 : BDELAY=15 : BOMBD=10 : HITS=0 : SCORE=0 : SPEED=0
  151. HITJET=14
  152.   Hide 
  153.  '  
  154.        Return 
  155. '===================================================================== 
  156.      STICKREAD:
  157.    XFIRE=Joy(1)
  158.    MORE=0
  159.    If Jleft(1)=-1 Then Add A,-(STICK+EXTRA)
  160.    If Jright(1)=-1 Then Add A,STICK+EXTRA
  161.    A=A-A/INERTIA
  162.            If Jdown(1)=-1
  163.                Add B,-SUBSTICK
  164.            End If 
  165. If UPDOWN<-6000 Then UPDOWN=-6000
  166.         If Jup(1)=-1
  167.             Add B,SUBSTICK
  168.         End If 
  169.   If UPDOWN>-150 Then UPDOWN=-150
  170.    B=B-B/INERTIA
  171.       Return 
  172. '====================================================================
  173.     KEYBOARD:
  174. '                   plane speed if view move               
  175. '
  176.    If F$="a" Then SPEED=SPEED+10
  177.    If F$="s" Then SPEED=SPEED-10
  178.    If F$="c" Then Volume 0 : End 
  179.    If F$="k" Then Extension_4_00EC 5,43000,0,200 : Rem test of reset?bombs? 
  180.    If F$="p" Then Gosub PROON : Rem for slower machines
  181.    If F$="r" : Rem                ......  reset planes  .test   
  182.          Extension_4_00EC 5,4500,-1000,800
  183.          Extension_4_00EC 6,5000,-500,600
  184.          Extension_4_00EC 7,10000,900,1000
  185.          Extension_4_00EC 8,12000,3000,1000
  186.        Wait 2
  187.     End If 
  188.         Return 
  189. '========================================================================
  190.      PLANEADJUST:
  191. '
  192. '
  193. '     for circling planes  
  194.    '1st plane 
  195. '
  196.     EBNK=EBNK+ECHNG
  197.    If EBNK>10000 Then EBNK=10000
  198.    If EBNK<-10000 Then EBNK=-10000
  199.    EHEAD= Extension_4_01E4(5)-(EBNK/20)
  200.     Extension_4_01A6 5,RT1,RT2+EBNK,EHEAD
  201.          Extension_4_0100 5,400+SPEED
  202. '
  203.   '      2nd plane 
  204.     EBNK2=EBNK2+ECHNG2
  205.    If EBNK2>10000 Then EBNK2=10000
  206.    If EBNK2<-10000 Then EBNK2=-10000
  207.    EHEAD2= Extension_4_01E4(6)-(EBNK2/20)
  208.     Extension_4_01A6 6,RT1,RT2+EBNK2,EHEAD2
  209.          Extension_4_0100 6,350+SPEED
  210. '
  211.   '      3nd plane 
  212.     EBNK3=EBNK3+ECHNG3
  213.    If EBNK3>10000 Then EBNK3=10000
  214.    If EBNK3<-10000 Then EBNK3=-10000
  215.    EHEAD3= Extension_4_01E4(7)-(EBNK3/20)
  216.     Extension_4_01A6 7,RT1,RT2+EBNK3,EHEAD3
  217.          Extension_4_0100 7,450+SPEED
  218. '
  219. '    4th plane 
  220.     EBNK4=EBNK4+ECHNG4
  221.    If EBNK4>10000 Then EBNK4=10000
  222.    If EBNK4<-10000 Then EBNK4=-10000
  223.    EHEAD4= Extension_4_01E4(8)-(EBNK4/20)
  224.     Extension_4_01A6 8,RT1,RT2+EBNK4,EHEAD4
  225.          Extension_4_0100 8,450+SPEED
  226. '
  227.             Return 
  228. '===================================================================== 
  229.       LOOKSEE:
  230.   UPDOWN=UPDOWN+B
  231.   AROUND=AROUND+A
  232.    Extension_4_01A6 0,RT3+OFFANG,0,AROUND
  233.   '
  234. Return 
  235. '====================================================================
  236. '
  237.    LAUNCH:
  238. '
  239.      Extension_4_0036 4,"missile1",WX,WY,WZ-100,RT1-UPDOWN,0,AROUND
  240.      Extension_4_05E2 4,0,7
  241.      Extension_4_0328 4,0,0,0,1000,ZSIZE
  242.      Extension_4_0328 4,1,0,0,-1000,ZSIZE
  243.      Extension_4_0328 4,2,0,0,0,700
  244.      Extension_4_0100 4,-350
  245.    GUH=1
  246.  Volume %10,33 : Sam Play %10,2,16000
  247. '
  248.    Return 
  249. '======================================================================
  250.    MISSILEMOVE:
  251.           If Extension_4_0356(4,5)=5
  252.                HIT=1 : LARGE=GUH
  253.                HITX= Extension_4_0114(5)
  254.                HITY= Extension_4_0128(5)
  255.                HITZ= Extension_4_013C(5) : Rem gets pos. for bang 
  256.                Gosub NEWPLANE
  257.                Goto FINISH
  258.            End If 
  259.           If Extension_4_0356(4,6)=6
  260.                HIT=1 : LARGE=GUH
  261.                HITX= Extension_4_0114(6)
  262.                HITY= Extension_4_0128(6)
  263.                HITZ= Extension_4_013C(6) : Rem gets pos. for bang 
  264.                 Gosub NEWPLANE2
  265.                Goto FINISH
  266.            End If 
  267.           If Extension_4_0356(4,7)=7
  268.                HIT=1 : LARGE=GUH
  269.                HITX= Extension_4_0114(7)
  270.                HITY= Extension_4_0128(7)
  271.                HITZ= Extension_4_013C(7) : Rem gets pos. for bang 
  272.                 Gosub NEWPLANE3
  273.                 Goto FINISH
  274.            End If 
  275.           If Extension_4_0356(4,8)=8
  276.                HIT=1 : LARGE=GUH
  277.                HITX= Extension_4_0114(8)
  278.                HITY= Extension_4_0128(8)
  279.                HITZ= Extension_4_013C(8) : Rem gets pos. for bang 
  280.                 Gosub NEWPLANE4
  281.            End If 
  282.      FINISH:
  283.      Inc GUH : Rem below is for acceleration on missile 
  284.       GFOR=-250*GUH : If GFOR<-1500 Then GFOR=-1500
  285.      Extension_4_0100 4,GFOR
  286.      Gosub TRAIL
  287.      If GUH>5 Then Volume %10,13
  288.     If GUH>10 Then Volume %10,0
  289.     If HIT=1 Then GUH=0 : Extension_4_0090 4 : Volume %10,0 : Return 
  290.     If GUH>(MISRANGE-1) Then GUH=0 : Extension_4_0090 4 : Volume %10,0
  291.    Return 
  292. '======================================================================= 
  293.    NEWPLANE:
  294.          Extension_4_00EC 5,0,0,100+Rnd(4000)
  295.         TMPA= Extension_4_01E4(5)
  296.          Extension_4_01A6 5,RT1,RT2,TMPA+Rnd(RT2)
  297.          Extension_4_0100 5,Rnd(4000)-39000
  298.         TMPA= Extension_4_01E4(5)
  299.          Extension_4_01A6 5,RT1,RT2,TMPA+Rnd(1300)
  300.          ECHECK=50 : EHEAD=0 : EBNK=0 : ECHNG=0
  301.         If DROP1>2 Then DROP1=Rnd(BOMBD)
  302.       Return 
  303. '======================================================================= 
  304.    NEWPLANE2:
  305.          Extension_4_00EC 6,0,0,100+Rnd(4000)
  306.         TMPA= Extension_4_01E4(6)
  307.          Extension_4_01A6 6,RT1,RT2,TMPA+Rnd(RT2)
  308.          Extension_4_0100 6,Rnd(4000)-39000
  309.         TMPA= Extension_4_01E4(6)
  310.          Extension_4_01A6 6,RT1,RT2,TMPA+Rnd(1300)
  311.          ECHECK2=50 : EHEAD2=0 : EBNK2=0 : ECHNG2=0
  312.         If DROP2>2 Then DROP2=Rnd(BOMBD)
  313.       Return 
  314. '=================================================================== 
  315.    NEWPLANE3:
  316.          Extension_4_00EC 7,0,0,100+Rnd(4000)
  317.         TMPA= Extension_4_01E4(7)
  318.          Extension_4_01A6 7,RT1,RT2,TMPA+Rnd(RT2)
  319.          Extension_4_0100 7,Rnd(4000)-39000
  320.         TMPA= Extension_4_01E4(7)
  321.          Extension_4_01A6 7,RT1,RT2,TMPA+Rnd(1300)
  322.          ECHECK3=50 : EHEAD3=0 : EBNK3=0 : ECHNG3=0
  323.        If DROP3>2 Then DROP3=Rnd(BOMBD)
  324.       Return 
  325. '=================================================================== 
  326.    NEWPLANE4: Rem this one to  lock  for slow machines   
  327.         If LESSPLANE=1 Then Extension_4_00EC 8,200,200,500000 : Return 
  328.          Extension_4_00EC 8,0,0,100+Rnd(4000)
  329.         TMPA= Extension_4_01E4(8)
  330.          Extension_4_01A6 8,RT1,RT2,TMPA+Rnd(RT2)
  331.          Extension_4_0100 8,Rnd(4000)-39000
  332.         TMPA= Extension_4_01E4(8)
  333.          Extension_4_01A6 8,RT1,RT2,TMPA+Rnd(1300)
  334.          ECHECK4=50 : EHEAD4=0 : EBNK4=0 : ECHNG4=0
  335.        If DROP4>2 Then DROP4=Rnd(BOMBD)
  336.       Return 
  337. '=================================================================== 
  338.    BANG:
  339.            SCRNHITX= Extension_4_0474(HITX,HITY,HITZ)
  340.            SCRNHITY= Extension_4_0480 
  341.       OINK=15
  342.     If SCRNHITX>0
  343.      If HIT=1 : Volume %101,63 : Sam Play %1,3,9000 : Sam Play %100,3,12000 : End If 
  344.      For U=0 To 10
  345.        Ink OINK : Inc OINK
  346.      If HIT<5 : Ink 15 : End If 
  347.      Plot SCRNHITX+Rnd((16-LARGE)*HIT/2),SCRNHITY-Rnd((16-LARGE)*HIT/2) : Next 
  348.      For U=0 To 10
  349.        Ink OINK : Inc OINK
  350.      If HIT<5 : Ink 15 : End If 
  351.      Plot SCRNHITX-Rnd((16-LARGE)*HIT/2),SCRNHITY-Rnd((16-LARGE)*HIT/2) : Next 
  352.     End If 
  353.      Inc HIT
  354.     If HIT=8 Then Volume %100,0
  355.    If HIT>20
  356.        Volume %101,0
  357.  Sam Play %1000,1,16000 : Sam Play %1,1,19000 : Sam Play %100,1,22000
  358.  Volume %1101,30
  359.   HIT=0 : Inc SCORE
  360.   End If 
  361.   Return 
  362. '====================================================================\\\ 
  363.   MAP:
  364.      Ink 15
  365.  '1st plane 
  366.        EN1X= Extension_4_0114(5)
  367.        EN1Y= Extension_4_0128(5)
  368.        MAPX1= Extension_4_0454(0,EN1X,EN1Y,0)/2000
  369.        MAPY1= Extension_4_0408 /2000
  370.       If MAPX1>22 Then MAPX1=22
  371.       If MAPX1<-21 Then MAPX1=-21
  372.       If MAPY1>21 Then MAPY1=21
  373.       If MAPY1<-22 Then MAPY1=-22
  374.      Put Block 1,132,200
  375.       Plot 156+MAPY1,219-MAPX1
  376. '2nd plane 
  377.        EN1X2= Extension_4_0114(6)
  378.        EN1Y2= Extension_4_0128(6)
  379.        MAPX12= Extension_4_0454(0,EN1X2,EN1Y2,0)/2000
  380.        MAPY12= Extension_4_0408 /2000
  381.       If MAPX12>22 Then MAPX12=22
  382.       If MAPX12<-21 Then MAPX12=-21
  383.       If MAPY12>21 Then MAPY12=21
  384.       If MAPY12<-22 Then MAPY12=-22
  385.       Plot 156+MAPY12,219-MAPX12
  386. '3nd plane 
  387.        EN1X3= Extension_4_0114(7)
  388.        EN1Y3= Extension_4_0128(7)
  389.        MAPX13= Extension_4_0454(0,EN1X3,EN1Y3,0)/2000
  390.        MAPY13= Extension_4_0408 /2000
  391.       If MAPX13>22 Then MAPX13=22
  392.       If MAPX13<-21 Then MAPX13=-21
  393.       If MAPY13>21 Then MAPY13=21
  394.       If MAPY13<-22 Then MAPY13=-22
  395.       Plot 156+MAPY13,219-MAPX13
  396. '4nd plane 
  397.        EN1X4= Extension_4_0114(8)
  398.        EN1Y4= Extension_4_0128(8)
  399.        MAPX14= Extension_4_0454(0,EN1X4,EN1Y4,0)/2000
  400.        MAPY14= Extension_4_0408 /2000
  401.       If MAPX14>22 Then MAPX14=22
  402.       If MAPX14<-21 Then MAPX14=-21
  403.       If MAPY14>21 Then MAPY14=21
  404.       If MAPY14<-22 Then MAPY14=-22
  405.       Plot 156+MAPY14,219-MAPX14
  406. Screen Swap 
  407.       Put Block 1,132,200
  408.       Plot 156+MAPY1,219-MAPX1
  409.       Plot 156+MAPY12,219-MAPX12
  410.       Plot 156+MAPY13,219-MAPX13
  411.       Plot 156+MAPY14,219-MAPX14
  412. Screen Swap 
  413.       RNG1= Extension_4_007E(0,5)
  414.       RNG2= Extension_4_007E(0,6)
  415.       RNG3= Extension_4_007E(0,7)
  416.       RNG4= Extension_4_007E(0,8)
  417. '
  418. ' -----------------THIS CHECKS IF NEW PLANE NEEDED-------------- 
  419. '
  420.  If RNG1>44000 Then Gosub NEWPLANE
  421.  If RNG2>44000 Then Gosub NEWPLANE2
  422.  If RNG3>44000 Then Gosub NEWPLANE3
  423.  If RNG4>44000 Then Gosub NEWPLANE4
  424. 'sound for distance effect 
  425.            NOOS1=80-(RNG1/350)
  426.        If NOOS1<4 Then NOOS1=4
  427.        If NOOS1>62 Then NOOS1=63
  428.              NOOS2=80-(RNG2/350)
  429.        If NOOS2<4 Then NOOS2=4
  430.        If NOOS2>62 Then NOOS2=63
  431.              NOOS3=80-(RNG3/350)
  432.        If NOOS3<4 Then NOOS3=4
  433.        If NOOS3>62 Then NOOS3=63
  434.  '
  435.    Volume %1000,NOOS1
  436.    Volume %1,NOOS2
  437.    Volume %100,NOOS3
  438. '
  439.     Return 
  440. '==============================================================  
  441.    ENEW:
  442.      ECHECK=10+Rnd(40)
  443.      ECHNG=Rnd(1400)-700
  444.     Return 
  445. '====================================================================
  446.    ENEW2:
  447.      ECHECK2=10+Rnd(40)
  448.      ECHNG2=Rnd(1400)-700
  449.     Return 
  450. '====================================================================
  451.    ENEW3:
  452.      ECHECK3=10+Rnd(40)
  453.      ECHNG3=Rnd(1400)-700
  454.     Return 
  455. '====================================================================
  456.    ENEW4:
  457.      ECHECK4=10+Rnd(40)
  458.      ECHNG4=Rnd(1400)-700
  459.     Return 
  460. '====================================================================
  461.   GTBLOCK:
  462.         Cls 12
  463.     Ink 15
  464.    Box 131,205-100 To 178,248-100
  465.       Extension_12_0394 155,225-100,2
  466.       Ink 2
  467.      Circle 155,225-100,15
  468.    Get Block 1,131,205-100,48,49
  469.     Cls 12
  470.             Return 
  471. '======================================================================
  472.     BACGRND:
  473.    '                
  474.    BACPOS= Extension_4_01E4(0)/35
  475.    EXTRA2=1 : OVER2=0 : EXTRA3=1 : OVER3=0
  476.    WID1=320 : If BACPOS>616 and BACPOS<936 Then WID1=936-BACPOS : EXTRA3=0 : OVER3=1
  477.    WID2=320 : If BACPOS>1552 Then WID2=1872-BACPOS : EXTRA2=0 : OVER2=1
  478.    If BACPOS>930 and BACPOS<1553 Then Goto SKIP1
  479.     Extension_4_049E 2,BACPOS*EXTRA2,BDEST-7,WID1,BHITE To WID2*OVER2,BDEST-SITE
  480.    SKIP1:
  481.    If BACPOS<617 Then Goto SKIP2
  482.     Extension_4_049E 3,(BACPOS-936)*EXTRA3,BDEST-7,WID2,BHITE To WID1*OVER3,BDEST-SITE
  483.    SKIP2:
  484. Return 
  485. '=========================================================================== 
  486.      CULOR:
  487.       '  ......  ......
  488. Colour 0,$456 : Rem used for rainbow 
  489. Colour 1,$878 : Rem mount light989 
  490. Colour 2,$679 : Rem 5th cloud and mount 78a  
  491. Colour 3,$988 : Rem 2nd pink cloud a99 
  492. Colour 4,$779 : Rem mount dark 88a 
  493. Colour 5,$888 : Rem 3rd light cloud999 
  494. Colour 6,$999 : Rem 1st  brightest cloud aaa   
  495. Colour 7,$778 : Rem 4rd cloud darkand mount 889  
  496. '   .......  objects........ 
  497. Colour 8,$CAA : Rem   fin  and grid   was876 then776   
  498. Colour 9,$ECD : Rem ecd  side fusde, wing top under taiplane ecd       
  499. Colour 10,$DCC : Remtop tailplne  
  500. Colour 11,$452 : Rem    
  501. Colour 12,$333 : Rem wing bot , 
  502. Colour 13,$656 : Rem666top bot fuse 
  503. Colour 14,$863 : Rem    
  504. '     extra
  505. Colour 15,$B62 : Rem map ?  
  506. '
  507.    Return 
  508. '===================================================================== 
  509. '
  510.      RAYN:
  511.   Set Rainbow 1,0,250,"","",""
  512. ST1=30-NTS : ST2=60-NTS : ST3=85-NTS : ST4=105-NTS : ST5=122-NTS : ST6=142-NTS : ST7=163-NTS
  513.  BLU=14 : STAGE=BLU-1 : Rem  was r=8 grn 9 
  514.  For N=0 To ST1 : Rain(1,N)=(7*256)+(8*16)+BLU : Next : Dec BLU
  515.  For N=ST1 To ST2 : Rain(1,N)=(7*256)+(8*16)+BLU : Next : Dec BLU
  516.  For N=ST2 To ST3 : Rain(1,N)=(7*256)+(8*16)+BLU : Next : Dec BLU
  517.  For N=ST3 To ST4 : Rain(1,N)=(7*256)+(8*16)+BLU : Next : Dec BLU
  518.  For N=ST4 To ST5 : Rain(1,N)=(7*256)+(8*16)+BLU : Next : Dec BLU
  519.  For N=ST5 To ST6 : Rain(1,N)=(7*256)+(8*16)+BLU : Next : Dec BLU
  520.  For N=ST6 To ST7 : Rain(1,N)=(7*256)+(8*16)+BLU : Next 
  521.  BLU=STAGE
  522.  Rain(1,ST1-2)=(7*256)+(8*16)+BLU
  523.  Rain(1,ST1-4)=(7*256)+(8*16)+BLU
  524.  Rain(1,ST1-6)=(7*256)+(8*16)+BLU
  525. Dec BLU
  526.   Rain(1,ST2-2)=(7*256)+(8*16)+BLU
  527.   Rain(1,ST2-4)=(7*256)+(8*16)+BLU
  528.   Rain(1,ST2-6)=(7*256)+(8*16)+BLU
  529. Dec BLU
  530.  Rain(1,ST3-2)=(7*256)+(8*16)+BLU
  531.  Rain(1,ST3-4)=(7*256)+(8*16)+BLU
  532.  Rain(1,ST3-6)=(7*256)+(8*16)+BLU
  533. Dec BLU
  534.   Rain(1,ST4-2)=(7*256)+(8*16)+BLU
  535.   Rain(1,ST4-4)=(7*256)+(8*16)+BLU
  536.   Rain(1,ST4-6)=(7*256)+(8*16)+BLU
  537. Dec BLU
  538.  Rain(1,ST5-2)=(7*256)+(8*16)+BLU
  539.  Rain(1,ST5-4)=(7*256)+(8*16)+BLU
  540.  Rain(1,ST5-6)=(7*256)+(8*16)+BLU
  541. Dec BLU
  542.   Rain(1,ST6-2)=(7*256)+(8*16)+BLU
  543.   Rain(1,ST6-4)=(7*256)+(8*16)+BLU
  544.   Rain(1,ST6-6)=(7*256)+(8*16)+BLU
  545. '
  546.  '  now ground
  547.    ST8=173 : ST9=190 : ST10=220 : BLU=6
  548.  For N=ST7 To ST8 : Rain(1,N)=(6*256)+(6*16)+BLU : Next : Dec BLU : Rem7,7,blu7
  549.  For N=ST8 To ST9 : Rain(1,N)=(6*256)+(6*16)+BLU : Next : Dec BLU
  550.  For N=ST9 To ST10 : Rain(1,N)=(6*256)+(6*16)+BLU : Next 
  551.  Rain(1,ST7)=(6*256)+(6*16)+10 : Rem6,6,10
  552.  Rain(1,ST7+2)=(6*256)+(6*16)+9 : Rem 6,6,9  
  553. '
  554.   Rain(1,ST8+2)=(6*256)+(6*16)+6 : Rem6,6,6,
  555.  Rain(1,ST9+2)=(6*256)+(6*16)+6 : Rem.6,6,6
  556.  Rain(1,ST9+4)=(6*256)+(6*16)+5 : Rem6,6,5 
  557.  Rainbow 1,0,40,214
  558.  Return 
  559. '
  560. '==========================================================================
  561. TRAIL:
  562.      TMPX= Extension_4_0114(4) : TMPY= Extension_4_0128(4) : TMPZ= Extension_4_013C(4)
  563.      SMKX(GUH)= Extension_4_0114(4)
  564.      SMKY(GUH)= Extension_4_0128(4)
  565.      SMKZ(GUH)= Extension_4_013C(4)
  566.     If LESSPLANE=0 Then Gosub SMOKE
  567.  Return 
  568. '========================================================================
  569.    SMOKE:
  570.     ' For F=0 To GUH 
  571.         TMPX= Extension_4_0474(SMKX(GUH),SMKY(GUH),SMKZ(GUH))
  572.         TMPY= Extension_4_0480 
  573.          Ink 6
  574.       For R=0 To 8
  575.         Plot TMPX+Rnd((22-GUH)/4),TMPY+Rnd(22-GUH)
  576.        Next 
  577.     ' Next 
  578.   Return 
  579. '
  580. '========================================================================''
  581.   RELEASE1:
  582.     If DROP1<2
  583.           If GONE1=0
  584.       ' If RNG1>30000 : Return : End If  
  585.           TEMPX= Extension_4_0114(5)
  586.           TEMPY= Extension_4_0128(5)
  587.           TEMPZ= Extension_4_013C(5)
  588.           TEMPAT= Extension_4_01E4(5)
  589.           RING1=9- Extension_4_007E(0,5)/3400 : SEQ1=0
  590.         If RING1<1 : RING1=1 : End If 
  591.    If RNG1<15000 : Extension_4_0036 10,"bomb",TEMPX,TEMPY,TEMPZ,-12000,0,TEMPAT : End If 
  592.    If RNG1>15000 : Extension_4_0036 10,"bomb2",TEMPX,TEMPY,TEMPZ,-12000,0,TEMPAT : End If 
  593.           Inc GONE1
  594.           End If 
  595. '
  596.                      Extension_4_0100 10,-200
  597.                      Extension_4_018C 10,200,0,0
  598. '
  599.                TMPOS= Extension_4_013C(10)
  600.                If TMPOS<-1000 : UUS=10 : Gosub BOMBANG1 : End If 
  601. '
  602.                If TMPOS<-1900
  603.     '  Volume %101,63 : Sam Play %1,3,9000 : Sam Play %100,3,12000 
  604. ' Sam Play %1000,1,16000 : Sam Play %1,1,19000 : Sam Play %100,1,2200
  605.                     ' Volume %1101,30
  606.                       Extension_4_0090 10 : GONE1=0
  607.                      DROP1=BDELAY+Rnd(BOMBD)
  608.                       Inc HITS
  609.                       Screen Display 1,140,50,,
  610.                End If 
  611.     End If 
  612.      Return 
  613. '========================================================================''
  614.   RELEASE2:
  615.     If DROP2<2
  616.           If GONE2=0
  617.        If RNG2>30000 : Return : End If 
  618.           TEMPX= Extension_4_0114(6)
  619.           TEMPY= Extension_4_0128(6)
  620.           TEMPZ= Extension_4_013C(6)
  621.           TEMPAT= Extension_4_01E4(6)
  622.            RING= Extension_4_007E(0,6)/3400 : SEQ1=0
  623.    If RNG2<15000 : Extension_4_0036 11,"bomb",TEMPX,TEMPY,TEMPZ,-12000,0,TEMPAT : End If 
  624.    If RNG2>15000 : Extension_4_0036 11,"bomb2",TEMPX,TEMPY,TEMPZ,-12000,0,TEMPAT : End If 
  625.           Inc GONE2
  626.           End If 
  627. '
  628.                      Extension_4_0100 11,-200
  629.                      Extension_4_018C 11,200,0,0
  630. '
  631.                TMPOS= Extension_4_013C(11)
  632.                If TMPOS<-1000 : UUS=11 : Gosub BOMBANG1 : End If 
  633. '
  634.                If TMPOS<-1900
  635.      ' Volume %101,63 : Sam Play %1,3,9000 : Sam Play %100,3,12000
  636. ' Sam Play %1000,1,16000 : Sam Play %1,1,19000 : Sam Play %100,1,2200
  637.  '                    Volume %1101,30 
  638.                       Extension_4_0090 11 : GONE2=0
  639.                      DROP2=BDELAY+Rnd(BOMBD)
  640.                     Inc HITS
  641.                       Screen Display 1,140,50,,
  642.                End If 
  643.     End If 
  644.      Return 
  645. '========================================================================''
  646.   RELEASE3:
  647.     If DROP3<2
  648.           If GONE3=0
  649.       If RNG3>30000 : Return : End If 
  650.           TEMPX= Extension_4_0114(7)
  651.           TEMPY= Extension_4_0128(7)
  652.           TEMPZ= Extension_4_013C(7)
  653.           TEMPAT= Extension_4_01E4(7)
  654.            RING= Extension_4_007E(0,7)/3400 : SEQ1=0
  655.    If RNG3<15000 : Extension_4_0036 12,"bomb",TEMPX,TEMPY,TEMPZ,-12000,0,TEMPAT : End If 
  656.    If RNG3>15000 : Extension_4_0036 12,"bomb2",TEMPX,TEMPY,TEMPZ,-12000,0,TEMPAT : End If 
  657.           Inc GONE3
  658.           End If 
  659. '
  660.                      Extension_4_0100 12,-200
  661.                      Extension_4_018C 12,200,0,0
  662. '
  663.                TMPOS= Extension_4_013C(12)
  664.               If TMPOS<-1000 : UUS=12 : Gosub BOMBANG1 : End If 
  665. '
  666.                If TMPOS<-1900
  667.     '  Volume %101,63 : Sam Play %1,3,9000 : Sam Play %100,3,12000 
  668. ' Sam Play %1000,1,16000 : Sam Play %1,1,19000 : Sam Play %100,1,2200
  669.   '                   Volume %1101,30
  670.                       Extension_4_0090 12 : GONE3=0
  671.                      DROP3=BDELAY+Rnd(BOMBD)
  672.                      Inc HITS
  673.                       Screen Display 1,140,50,,
  674.                End If 
  675.     End If 
  676.      Return 
  677. '========================================================================''
  678.   RELEASE4:
  679.       If LESSPLANE=1 : Return : End If 
  680.     If DROP4<2
  681.           If GONE4=0
  682.        If RNG4>30000 : Return : End If 
  683.           TEMPX= Extension_4_0114(8)
  684.           TEMPY= Extension_4_0128(8)
  685.           TEMPZ= Extension_4_013C(8)
  686.           TEMPAT= Extension_4_01E4(8)
  687.            RING= Extension_4_007E(0,8)/3400 : SEQ1=0
  688.    If RNG4<15000 : Extension_4_0036 13,"bomb",TEMPX,TEMPY,TEMPZ,-12000,0,TEMPAT : End If 
  689.    If RNG4>15000 : Extension_4_0036 13,"bomb2",TEMPX,TEMPY,TEMPZ,-12000,0,TEMPAT : End If 
  690.           Inc GONE4
  691.           End If 
  692. '
  693.                      Extension_4_0100 13,-200
  694.                      Extension_4_018C 13,200,0,0
  695. '
  696.                TMPOS= Extension_4_013C(13)
  697.                If TMPOS<-1000 : UUS=13 : Gosub BOMBANG1 : End If 
  698. '
  699.                If TMPOS<-1900
  700.    '   Volume %101,63 : Sam Play %1,3,9000 : Sam Play %100,3,12000
  701. ' Sam Play %1000,1,16000 : Sam Play %1,1,19000 : Sam Play %100,1,2200
  702.  '                    Volume %1101,30 
  703.                       Extension_4_0090 13 : GONE4=0
  704.                      DROP4=BDELAY+Rnd(BOMBD)
  705.                      Inc HITS
  706.                       Screen Display 1,140,50,,
  707.                End If 
  708.     End If 
  709.      Return 
  710. '
  711. '========================================================================
  712.  BOMBANG1:
  713.      TEMPX= Extension_4_0114(UUS)
  714.      TEMPY= Extension_4_0128(UUS)
  715.      TEMPZ= Extension_4_013C(UUS)
  716.      GOTX= Extension_4_0474(TEMPX,TEMPY,TEMPZ)-5
  717.      GOTY= Extension_4_0480 +20
  718.   '
  719.   If GOTX>1
  720.      If GOTY<50 : GOTY=203 : End If 
  721.      If GOTY>203 : GOTY=203 : End If 
  722.               Inc SEQ1
  723.             If SEQ1<3 : EUS1=GOTY : End If 
  724.             If SEQ1>RING1 : SEQ1=RING1 : End If 
  725.             If SEQ1<1 : SEQ1=1 : End If 
  726.       Paste Bob GOTX-30,EUS1-30,SEQ1
  727.     BUMP=SEQ1/2
  728.     If RING1>5 : Screen Display 1,140,50-Rnd(SEQ1),, : End If 
  729.   End If 
  730. Return 
  731. '
  732. '
  733. '========================================================================
  734.   OUT:
  735.      Locate 0,0 : Print SEQ1;"      " : Screen Swap : End 
  736. Return 
  737. '
  738. '=========================================================== 
  739. WIN:
  740.       Locate 2,8
  741. Print "I guess this means you exterminated "
  742. Print "  enough of the enemy, congrats!"
  743. Print 
  744. Print " Hit a key to restart with "
  745. Print "   slightly faster jets"
  746. Print "You need to hit one more "
  747. Print "   to win next time"
  748.    Screen Swap 
  749.   Wait Key 
  750.   HITS=0 : SCORE=0
  751. Gosub NEWPLANE : Gosub NEWPLANE2 : Gosub NEWPLANE3 : Gosub NEWPLANE4
  752. SPEED=SPEED+20
  753. HITJET=HITJET+1
  754. Return 
  755. '====================================================================
  756. LOSE:
  757.  Locate 2,8
  758. Print " I guess this means the enemy"
  759. Print " wiped out your city, oh dear..."
  760. Print 
  761. Print "     Hit a key to restart."
  762. Print " The random pattern will probably"
  763. Print "  be easier next time..."
  764. Print "(If really annoyed use key S )"
  765. Print "     to slow jets)."
  766.    Screen Swap 
  767.   Wait Key 
  768.   HITS=0 : SCORE=0
  769. Gosub NEWPLANE : Gosub NEWPLANE2 : Gosub NEWPLANE3 : Gosub NEWPLANE4
  770.  'SPEED=SPEED-20
  771. Return 
  772. '======================================================================
  773. HALP:
  774.  Screen 6
  775. If NTS=24 Then Screen Offset 6,0,8
  776. Screen To Front 6
  777. Hide 
  778. Print ''
  779. Print "                     .....   'DEFENCE' ..... .      "
  780.  Print "                    An old idea put into 3d.      .. Uses amos 3d."
  781. Print 
  782. Print "The map shows relative positions of enemy,- beyond  circle is out of range."
  783. Print 
  784. Print "Viewpoint / sight movement is controlled by joystick.  "
  785. Print " Fire button for missile."
  786. Print " You can't fire again till the missile goes full range or hits target"
  787. Print "(The missile has proximity detection.. else you never hit anything)"
  788. Print 
  789. Print "If the jets get 200 bomb drops they win, if you get 15 jets first you win"
  790. Print "and jet speed and hits needed to win are raised. (sophisticated stuff!)"
  791.  Print 
  792.  Print " I hope you will find the control system sufficiently infuriating."
  793.  Print " However, once you get the sense of depth correctly it is fairly easy"
  794.  Print " -and the random target pattern is sometimes much easier than others."
  795.  Print 
  796. Print "To help slow A1200s key P will Prune clouds, put one enemy out of action"
  797. Print " overhead, etc...  but screen movement will still tend to appear uneven."
  798.  Print 
  799.  Print " A crude time delay protects super machines from uncontrollability"
  800.  Print " Keys to play with:- A adds speed to targets,  S slows- even reverse! "
  801.  Print " C  to end-  and so amos programmers can edit with sound OFF   grrrr."
  802. Print 
  803. Print " presss key to continue.."
  804.  Wait Key 
  805.  Screen To Front 1
  806. Return 
  807. '================================================
  808. PROON:
  809. If SWOP=1
  810. LESSPLANE=0
  811. XTRA=0
  812. DISPLACE=0
  813. BHITE=143-DISPLACE
  814. BDEST=57+DISPLACE
  815. SWOP=0
  816. Return 
  817. End If 
  818. '
  819. If SWOP=0
  820. LESSPLANE=1
  821. DISPLACE=100
  822.  XTRA=30
  823. BHITE=143-DISPLACE
  824. BDEST=57+DISPLACE
  825. SWOP=1
  826.   Extension_4_00EC 8,200,200,500000
  827. Return 
  828. End If 
  829. Return